<?php
/*
	파일명: LatestComment.class.php
	제작자: 박경종(너굴군)
	제작일시: 2008-06-27
	최종업데이트: 2008-07-17
	이메일: kevinpark1981@gmail.com
	홈페이지: http://bequietzero.com
*/



/*	클래스: LatestComment
	버전: 1.0
	PHP버전: 5.0 이상
	설명: 스킨 형태의 클래스로.. 스타일 부분만 정의한다.
*/
class LatestComment extends Latest
{


    /* 싱글톤 패턴 */
    private static $inst;
    public static function getInstance() {
        global $gwikiPath;
        if(!isset(LatestComment::$inst)) LatestComment::$inst = new LatestComment($gwikiPath['class']);
        return LatestComment::$inst;
    }

	/*	함수: query	
		설명: 쿼리를 실행해 $list에 목록을 저장한다. 다른 형태의 퀴리를 원하면 하위클래스에서 재정의 가능하다.
	*/
	protected function query($rows) {
		global $g4;

		// 댓글만 뽑아옴 -> 중복된 것은 제거한다.
		$sql = "SELECT DISTINCT N.bo_table, N.wr_parent
			FROM $g4[board_new_table] N, $g4[board_table] B, $g4[group_table] G 
			WHERE N.bo_table = B.bo_table AND G.gr_id = B.gr_id AND N.wr_id <> N.wr_parent ";

        // 멤버 아이디가 입력되어 있으면 그 사용자가 입력하지 않은 댓글만 뽑아옴
        if($this->mb_id) $sql .= " AND mb_id <> '$this->mb_id' ";


        // 출력 범위 설정

        // 출력할 그룹
		for($i=0; $i<count($this->listGroup); $i++) $sql .= " AND G.gr_subject = '{$this->listGroup[$i]}' ";
        // 출력할 게시판
		for($i=0; $i<count($this->listBoard); $i++) $sql .= " AND B.bo_subject = '{$this->listBoard[$i]}' ";
        // 제외할 그룹
		for($i=0; $i<count($this->unlistGroup); $i++) $sql .= " AND G.gr_subject <> '{$this->unlistGroup[$i]}' ";
        // 제외할 게시판
		for($i=0; $i<count($this->unlistBoard); $i++) $sql .= " AND B.bo_subject <> '{$this->unlistBoard[$i]}' ";

        // 시간별로 정렬
        $sql .=	" order by N.bn_datetime desc ";
		
		$list = sql_query($sql);

		$k=0;
		for ($i=0;$k<$rows && $row = sql_fetch_array($list); $i++) {

			$sql = "SELECT `wr_subject`, wr_name, wr_comment, wr_id, DATE_FORMAT(wr_last, '%y.%c.%e(%k:%i)') as wr_last FROM `$g4[write_prefix]$row[bo_table]` WHERE `wr_id`=$row[wr_parent] ";

            // 멤버 아이디가 입력되어 있으면 그 사용자가 입력한 글의 댓글만 뽑아옴
            if($this->mb_id) $sql .= " AND mb_id = '$this->mb_id' ";

			$wr = sql_fetch($sql);
			if(count($wr[wr_subject])!=0) {
				$this->list[$k] = array();
				$this->list[$k][bo_table] = $row[bo_table];
				// 제목 길이 조절
				if($this->cutSubject!=0)	$this->list[$k][wr_subject] = conv_subject($wr[wr_subject], $this->cutSubject, "…");
				else $this->list[$k][wr_subject] = $wr[wr_subject];
				$this->list[$k][wr_id] = $wr[wr_id];
				$this->list[$k][wr_last] = $wr[wr_last];
                $this->list[$k][wr_name] = $wr[wr_name];
                $this->list[$k][wr_comment] = $wr[wr_comment];
				$k++;
			}
		}
	}

	/*	함수: createHTML
		설명: 페이지에 삽입될 html소스를 생성한다. 기본적으로 ul li리스트를 생성한다.
	*/
	protected function createHTML() {
		global $g4;
		$result = '';
		for($i=0; $i<count($this->list); $i++) {
			$result .= "<div class='latestComment'>";
			$result .= "<ul><li>";
			$result .= "<a href='$g4[bbs_path]/board.php?bo_table={$this->list[$i][bo_table]}&wr_id={$this->list[$i][wr_id]}'>{$this->list[$i][wr_subject]}({$this->list[$i][wr_comment]})</a>";
			$result .= "</li></ul>";
			$result .= "</div>";
		}
		return $result;
	}

	/*	함수: addStyle
		설명: 스타일을 정의하는 함수.
	*/
	protected function addStyle() {
        if(!isset($this->style) || $this->style=='') {
            $this->style = "<link rel=\"stylesheet\" href=\"{$this->classPath}/style/LatestComment.style.css\" type=\"text/css\">";
        }
	}

    protected function addScript(){}
}


/*	버전 히스토리	
-----------------------------------------------------------

	버전1.0:2008-06-20
	-------------------------------------------------------
		최근 코맨트 클래스
-----------------------------------------------------------
*/


?>